<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xilplmi: xplmi_dma.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xilplmi
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;"
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xplmi__dma_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">xplmi_dma.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This is the file which contains PMC DMA interface code for the PLM. </p>
<pre>
MODIFICATION HISTORY:</pre><pre>Ver   Who  Date        Changes
</p>
<hr/>
<p>
1.00  kc   02/21/2017 Initial release
1.01  bsv  04/18/2019 Added APIs to support non blocking DMA
      vnsl 04/22/2019 Added API to get DMA instance
      kc   05/17/2019 Added ECC initiation function using PMC DMA
1.02  bsv  04/04/2020 Code clean up
      bsv  04/07/2020 Renamed DMA to PMCDMA
1.03  bm   09/02/2020 Add XPlmi_MemSet API
      bm   09/23/2020 Fix XPlmi_InitNVerifyMem for 64-bit address
      bsv  09/30/2020 Added parallel DMA support for SBI, JTAG, SMAP and PCIE
                      boot modes
      bm   10/14/2020 Code clean up
      td   10/19/2020 MISRA C Fixes
1.04  td   11/23/2020 MISRA C Rule 17.8 Fixes
      ma   03/24/2021 Reduced minimum digits of time stamp decimals to 3
1.05  td   07/08/2021 Fix doxygen warnings
      bsv  08/02/2021 Code clean up to reduce size
      bsv  08/13/2021 Code clean to reduce elf size by optimizing memset APIs
      bsv  08/15/2021 Removed unwanted goto statements
      bsv  08/22/2021 Fix bug in XPlmi_MemSetBytes
      ma   08/30/2021 Added XPlmi_SsitWaitForDmaDone function for SSIT cases
1.06  kpt  10/25/2021 Resolved Divide by Zero exception in XPlmi_MemSet
      am   11/24/2021 Fixed doxygen warning
      ma   12/17/2021 Do not check for SSIT errors in
                      XPlmi_SsitWaitForDmaDone function
      ma   01/17/2022 Enable SLVERR for PMC DMA
      bm   01/20/2022 Fix compilation warnings in Xil_SMemCpy
      skd  03/03/2022 Minor bug fix in XPlmi_MemCpy64
1.07  bm   07/06/2022 Refactor versal and versal_net code
1.08  bm   11/07/2022 Clear SSS Cfg Error in SSSCfgSbiDma for Versal Net
      dd   03/28/2023 Updated doxygen comments
      ng   03/30/2023 Updated algorithm and return values in doxygen comments
1.09  ng   07/06/2023 Added support for SDT flow
      am   08/23/2023 Fixed doxygen comment for XPlmi_DmaXfr Len in words
      ng   01/28/2024 optimized u8 variables
      mss  03/13/2024 MISRA-C violatiom Rule 17.8 fixed
      bm   07/15/2024 Fixed Memset logic by using source buffer in PPU RAM
      obs  01/27/2025 Changed DMA WaitForDone calls to use APIs which support timeout
1.10  vss  02/11/2025 Updated SSS configuration correctly.
      ma   03/19/2025 Remove clearing the SSS configuration for SBI-&gt;DMA1</pre><pre></pre> </div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga631a5f1a19d38bfe5b30d40086c2c09d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga631a5f1a19d38bfe5b30d40086c2c09d">XPLMI_XCSUDMA_DEST_CTRL_OFFSET</a>&#160;&#160;&#160;(0x80CU)</td></tr>
<tr class="memdesc:ga631a5f1a19d38bfe5b30d40086c2c09d"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSUDMA destination control offset.  <a href="group__xilplmi__server__apis.html#ga631a5f1a19d38bfe5b30d40086c2c09d">More...</a><br/></td></tr>
<tr class="separator:ga631a5f1a19d38bfe5b30d40086c2c09d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga9f29b32281a13f0c85ff0c5618bb3f26"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga9f29b32281a13f0c85ff0c5618bb3f26">XPlmi_DmaInit</a> (void)</td></tr>
<tr class="memdesc:ga9f29b32281a13f0c85ff0c5618bb3f26"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function will initialize the DMA driver instances.  <a href="group__xilplmi__server__apis.html#ga9f29b32281a13f0c85ff0c5618bb3f26">More...</a><br/></td></tr>
<tr class="separator:ga9f29b32281a13f0c85ff0c5618bb3f26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga031e673cbf9cf7d9f08ae42285d2af79"><td class="memItemLeft" align="right" valign="top">XPmcDma *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga031e673cbf9cf7d9f08ae42285d2af79">XPlmi_GetDmaInstance</a> (u32 DeviceId)</td></tr>
<tr class="memdesc:ga031e673cbf9cf7d9f08ae42285d2af79"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function returns DMA instance.  <a href="group__xilplmi__server__apis.html#ga031e673cbf9cf7d9f08ae42285d2af79">More...</a><br/></td></tr>
<tr class="separator:ga031e673cbf9cf7d9f08ae42285d2af79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga544f491afc4a8af8e70c4634a0483a33"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga544f491afc4a8af8e70c4634a0483a33">XPlmi_WaitForNonBlkDma</a> (u32 DmaFlags)</td></tr>
<tr class="memdesc:ga544f491afc4a8af8e70c4634a0483a33"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to wait on non blocking DMA.  <a href="group__xilplmi__server__apis.html#ga544f491afc4a8af8e70c4634a0483a33">More...</a><br/></td></tr>
<tr class="separator:ga544f491afc4a8af8e70c4634a0483a33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga78b062e894d07cb938da01eed092b3fd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga78b062e894d07cb938da01eed092b3fd">XPlmi_WaitForNonBlkSrcDma</a> (u32 DmaFlags)</td></tr>
<tr class="memdesc:ga78b062e894d07cb938da01eed092b3fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used set wait on non blocking DMA.  <a href="group__xilplmi__server__apis.html#ga78b062e894d07cb938da01eed092b3fd">More...</a><br/></td></tr>
<tr class="separator:ga78b062e894d07cb938da01eed092b3fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacc14a5cbf084f3cea52b68915d81d975"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gacc14a5cbf084f3cea52b68915d81d975">XPlmi_WaitForNonBlkDestDma</a> (u32 DmaFlags)</td></tr>
<tr class="memdesc:gacc14a5cbf084f3cea52b68915d81d975"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used set wait on non blocking DMA.  <a href="group__xilplmi__server__apis.html#gacc14a5cbf084f3cea52b68915d81d975">More...</a><br/></td></tr>
<tr class="separator:gacc14a5cbf084f3cea52b68915d81d975"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga97abca4d5dd6d18f6913e07f4be5ee3c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga97abca4d5dd6d18f6913e07f4be5ee3c">XPlmi_SbiDmaXfer</a> (u64 DestAddr, u32 Len, u32 Flags)</td></tr>
<tr class="memdesc:ga97abca4d5dd6d18f6913e07f4be5ee3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to transfer the data from SBI to DMA.  <a href="group__xilplmi__server__apis.html#ga97abca4d5dd6d18f6913e07f4be5ee3c">More...</a><br/></td></tr>
<tr class="separator:ga97abca4d5dd6d18f6913e07f4be5ee3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae4cd56e91b16d199fb266354472b1bea"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gae4cd56e91b16d199fb266354472b1bea">XPlmi_DmaSbiXfer</a> (u64 SrcAddr, u32 Len, u32 Flags)</td></tr>
<tr class="memdesc:gae4cd56e91b16d199fb266354472b1bea"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to transfer the data from DMA to SBI.  <a href="group__xilplmi__server__apis.html#gae4cd56e91b16d199fb266354472b1bea">More...</a><br/></td></tr>
<tr class="separator:gae4cd56e91b16d199fb266354472b1bea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1b0be0d5fccf58e120aa3d786fd0ddb3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga1b0be0d5fccf58e120aa3d786fd0ddb3">XPlmi_DmaXfr</a> (u64 SrcAddr, u64 DestAddr, u32 Len, u32 Flags)</td></tr>
<tr class="memdesc:ga1b0be0d5fccf58e120aa3d786fd0ddb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to initiate and complete the DMA to DMA transfer.  <a href="group__xilplmi__server__apis.html#ga1b0be0d5fccf58e120aa3d786fd0ddb3">More...</a><br/></td></tr>
<tr class="separator:ga1b0be0d5fccf58e120aa3d786fd0ddb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3ca67e4e848d511ee898a666db13464f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga3ca67e4e848d511ee898a666db13464f">XPlmi_EccInit</a> (u64 Addr, u32 Len)</td></tr>
<tr class="memdesc:ga3ca67e4e848d511ee898a666db13464f"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to initialize the ECC memory.  <a href="group__xilplmi__server__apis.html#ga3ca67e4e848d511ee898a666db13464f">More...</a><br/></td></tr>
<tr class="separator:ga3ca67e4e848d511ee898a666db13464f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab7f5511c526c00a7477c689c3a476e3f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gab7f5511c526c00a7477c689c3a476e3f">XPlmi_MemSet</a> (u64 DestAddress, u32 Val, u32 Len)</td></tr>
<tr class="memdesc:gab7f5511c526c00a7477c689c3a476e3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to Set the memory with a value.  <a href="group__xilplmi__server__apis.html#gab7f5511c526c00a7477c689c3a476e3f">More...</a><br/></td></tr>
<tr class="separator:gab7f5511c526c00a7477c689c3a476e3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga166fa6a68d9c4df38fd7d3af77a7b521"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga166fa6a68d9c4df38fd7d3af77a7b521">XPlmi_InitNVerifyMem</a> (u64 Addr, u32 Len)</td></tr>
<tr class="memdesc:ga166fa6a68d9c4df38fd7d3af77a7b521"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function initializes the memory using PZM and verifies by reading back initialized memory.  <a href="group__xilplmi__server__apis.html#ga166fa6a68d9c4df38fd7d3af77a7b521">More...</a><br/></td></tr>
<tr class="separator:ga166fa6a68d9c4df38fd7d3af77a7b521"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadf56e6797513aa0745a3a838afe60f79"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gadf56e6797513aa0745a3a838afe60f79">XPlmi_SetMaxOutCmds</a> (u8 Val)</td></tr>
<tr class="memdesc:gadf56e6797513aa0745a3a838afe60f79"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to set the MaxOutCmds variable.  <a href="group__xilplmi__server__apis.html#gadf56e6797513aa0745a3a838afe60f79">More...</a><br/></td></tr>
<tr class="separator:gadf56e6797513aa0745a3a838afe60f79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga996d4ed8fe42abcb42ef2fba05264a68"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga996d4ed8fe42abcb42ef2fba05264a68">XPlmi_MemSetBytes</a> (void *const DestPtr, u32 DestLen, u8 Val, u32 Length)</td></tr>
<tr class="memdesc:ga996d4ed8fe42abcb42ef2fba05264a68"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to Set the memory with a value.  <a href="group__xilplmi__server__apis.html#ga996d4ed8fe42abcb42ef2fba05264a68">More...</a><br/></td></tr>
<tr class="separator:ga996d4ed8fe42abcb42ef2fba05264a68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaadaef02a2e674a71f8c0eeb895b915a8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gaadaef02a2e674a71f8c0eeb895b915a8">XPlmi_MemCpy64</a> (u64 DestAddress, u64 SrcAddress, u32 Length)</td></tr>
<tr class="memdesc:gaadaef02a2e674a71f8c0eeb895b915a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function can copy the content of memory for both 32 and 64-bit address space.  <a href="group__xilplmi__server__apis.html#gaadaef02a2e674a71f8c0eeb895b915a8">More...</a><br/></td></tr>
<tr class="separator:gaadaef02a2e674a71f8c0eeb895b915a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
